<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>03_事件的传播</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }

      .out {
        width: 500px;
        height: 500px;
        background-color: pink;
        display: flex;
        justify-content: center;
        align-items: center;
      }

      .center {
        width: 300px;
        height: 300px;
        background-color: skyblue;
        display: flex;
        justify-content: center;
        align-items: center;
      }

      .inner {
        width: 100px;
        height: 100px;
        background-color: purple;
      }
    </style>
  </head>

  <body>
    <div class="out">
      <div class="center">
        <div class="inner"></div>
      </div>
    </div>

    <!-- 
    element.addEventListener(
        type //事件类型
        listener //事件处理函数
        useCapture //使用捕获 boolean 
    )
    useCapture为true  则事件传播方向为【外->内】=> 捕获
    useCapture为false 则事件传播方向为【内->外】=> 冒泡
    useCapture为可选参数 默认值值是false => 系统默认的事件传播机制为【冒泡】

    e.path 告诉你 事件的传播路径（自下而上）
    path: (7) [div.inner, div.center, div.out, body, html, document, Window]
     -->
    <script>
      /* 找出元素 */
      var inner = document.querySelector(".inner");
      var center = document.querySelector(".center");
      var out = document.querySelector(".out");

      /* 给三级DOM元素都绑定事件监听器 */
      // 使用默认事件传播方向：冒泡（bubble）=自下而上=由内向外
      //   inner.addEventListener("click", function (e) {
      //     console.log("inner");
      //   });
      //   center.addEventListener("click", function (e) {
      //     console.log("center");
      //   });
      //   out.addEventListener("click", function (e) {
      //     console.log("out");
      //   });

      // 使用默认事件传播方向：捕获（capture）=自上而下=由外向内
      // addEventListener第三个参数（useCapture）指定为true则使用捕获 false或不写则使用冒泡
      inner.addEventListener(
        "click",
        function (e) {
          console.log("inner",e);
        },
        true//使用捕获
      );
      center.addEventListener(
        "click",
        function (e) {
          console.log("center");
        },
        true//useCapture
      );
      out.addEventListener(
        "click",
        function (e) {
          console.log("out");
        },
        true//useCapture
      );
    </script>
  </body>
</html>
